
/**
 * @Project : Clion_ProgrammingExercises
 * @File : 0841
 * @Author : WangRuoyu 
 * @Date : 2023/9/20 20:39
 */

#include "iostream"

using namespace std;

typedef unsigned long long ull;
const int N = 1e5 + 10;
ull h[N], p[N];
ull P = 131;

ull getHash(int l, int r) {
    return h[r] - h[l - 1] * p[r - l + 1];
}

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    string str;
    cin >> str;

    p[0] = 1;
    for (int i = 1; i <= n; ++i) {
        p[i] = p[i - 1] * P;
        h[i] = h[i - 1] * P + str[i - 1];
    }
    for (int i = 0; i < m; ++i) {
        int l1, r1, l2, r2;
        scanf("%d %d %d %d", &l1, &r1, &l2, &r2);
        ull lr1 = getHash(l1, r1);
        ull lr2 = getHash(l1, r1);
//        printf("%d %d", lr1, lr2);
        if (lr1 == lr2) {
            puts("Yes");
        } else {
            puts("No");
        }
    }
    return 0;
}